package com.cskaoyan.javase.oop2.encapsulate._2polymorphic._1basic;

/**
 * 多态的访问特征:
 * 当父子类出现同名成员（变量或方法）时
 * 使用多态的形式访问（多态的形式指：用父类引用指向子类对象，然后用引用名访问成员）时的访问特征。
 *
 * 多态现象指的是同一个父类引用,根据指向的子类对象的不同,得出不同的结果
 * 思考两个问题:
 *      1.成员方法的调用有没有多态现象?
 *      2.成员变量有没有多态现象?
 *
 *
 * @since 11:01
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Father f;
        f = new BigSon();
        f.test();
        System.out.println(f.a);
        f = new MidSon();
        f.test();
        System.out.println(f.a);

        f = new SmallSon();
        f.test();
        System.out.println(f.a);

    }
}

class Father {
    int a = 10;

    public void test() {
        System.out.println("father");
    }
}

class BigSon extends Father {
    int a = 20;

    @Override
    public void test() {
        System.out.println("big son");
    }
}

class MidSon extends Father {
    int a = 30;

    @Override
    public void test() {
        System.out.println("mid son");
    }
}

class SmallSon extends Father {
    int a = 40;

    @Override
    public void test() {
        System.out.println("small son");
    }
}